package com.qijian.maindata.domain.dto;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


@Data
public class KingDeeBomMaterial {

    @JSONField(name = "Model")
    private KingdeeSimpleModeL Model;

    @Data
    public static class KingdeeSimpleModeL {

        @JSONField(name = "FID", ordinal = 1)
        public String FID;

        @JSONField(name = "FBillTypeID", ordinal = 2)
        public FNumber FBillTypeID;

        @JSONField(name = "FBillNo", ordinal = 3)
        public String FBillNo;

        @JSONField(name = "FApplicationDate", ordinal = 4)
        public String FApplicationDate;

        @JSONField(name = "FRequestType", ordinal = 5)
        public String FRequestType;

        @JSONField(name = "FApplicationOrgId", ordinal = 6)
        public FNumber FApplicationOrgId;

        @JSONField(name = "FApplicationDeptId", ordinal = 7)
        public FNumber FApplicationDeptId;

        @JSONField(name = "FApplicantId", ordinal = 8)
        public FApplicantId FApplicantId;

        @JSONField(name = "FCurrencyId", ordinal = 9)
        public FNumber FCurrencyId;

        @JSONField(name = "FNote", ordinal = 10)
        public String FNote;

        @JSONField(name = "FSrcType", ordinal = 11)
        public String FSrcType;

        @JSONField(name = "FISPRICEEXCLUDETAX", ordinal = 12)
        public String FISPRICEEXCLUDETAX;

        @JSONField(name = "FExchangeTypeId", ordinal = 13)
        public FNumber FExchangeTypeId;

        @JSONField(name = "FIsConvert", ordinal = 14)
        public String FIsConvert;

        @JSONField(name = "F_ORA_Base2", ordinal = 15)
        public FNumber F_ORA_Base2;

        @JSONField(name = "F_ora_Text2", ordinal = 16)
        public String F_ora_Text2;

        @JSONField(name = "FACCTYPE", ordinal = 17)
        public String FACCTYPE;

        @JSONField(name = "FCloseReason", ordinal = 18)
        public String FCloseReason;

        @JSONField(name = "F_ora_Text4", ordinal = 19)
        public String F_ora_Text4;

        @JSONField(name = "F_ora_Text21", ordinal = 20)
        public String F_ora_Text21;

        @JSONField(name = "F_ora_CheckBox", ordinal = 21)
        public String F_ora_CheckBox;

        @JSONField(name = "F_ora_Text3", ordinal = 22)
        public String F_ora_Text3;

        @JSONField(name = "F_ora_Remarks", ordinal = 23)
        public String F_ora_Remarks;

        @JSONField(name = "F_ora_Remarks1", ordinal = 24)
        public String F_ora_Remarks1;


        @JSONField(name = "F_ygjghj", ordinal = 25)
        public Integer F_ygjghj;


        @JSONField(name = "F_ora_Combo", ordinal = 26)
        public String F_ora_Combo;


        @JSONField(name = "F_YIIM_Assistant", ordinal = 27)
        public FNumber F_YIIM_Assistant;

        @JSONField(name = "F_YIIM_CheckBox1", ordinal = 28)
        public String F_YIIM_CheckBox1;

        @JSONField(name = "FMobBillHead", ordinal = 29)
        public FMobBillHeadEntity FMobBillHead;


        @JSONField(name = "FEntity", ordinal = 30)
        public List<FEntity> FEntity;

    }

    @Data
    public static class FNumber {
        @JSONField(name = "FNumber")
        private String FNumber;

        public FNumber(String FNumber) {
            this.FNumber = FNumber;
        }
    }

    @Data
    public static class FSTAFFNUMBER {
        @JSONField(name = "FSTAFFNUMBER")
        private String FSTAFFNUMBER;

        public FSTAFFNUMBER(String FSTAFFNUMBER) {
            this.FSTAFFNUMBER = FSTAFFNUMBER;
        }
    }

    @Data
    public static class F_ora_Text {
        @JSONField(name = "F_ora_Text")
        private String F_ora_Text;

        public F_ora_Text(String F_ora_Text) {
            this.F_ora_Text = F_ora_Text;
        }
    }




    @Data
    public static class FEntity {
        @JSONField(name = "FEntryID", ordinal = 1)
        private Long FEntryID;


        @JSONField(name = "FRequireOrgId", ordinal = 2)
        public FNumber FRequireOrgId;

        /**
         * 物料编码
         */
        @JSONField(name = "FMaterialId", ordinal = 3)
        private FNumber FMaterialId;

        @JSONField(name = "F_ysfs", ordinal = 4)
        public FNumber F_ysfs;

        /**
         * 辅助属性
         */
        @JSONField(name = "FAuxPropId", ordinal = 5)
        private FAuxPropId FAuxPropId;


        @JSONField(name = "FMaterialDesc", ordinal = 6)
        public String FMaterialDesc;

        @JSONField(name = "FUnitID", ordinal = 7)
        private FNumber FUnitID;

        @JSONField(name = "FReqQty", ordinal = 8)
        private BigDecimal FReqQty;

        @JSONField(name = "F_ora_UnitID", ordinal = 9)
        private FNumber F_ora_UnitID;

        @JSONField(name = "F_ora_Qty", ordinal = 10)
        private BigDecimal F_ora_Qty;

        @JSONField(name = "FApproveQty", ordinal = 11)
        public BigDecimal FApproveQty;

        @JSONField(name = "FPurchaseOrgId", ordinal = 12)
        public FNumber FPurchaseOrgId;

        @JSONField(name = "FSuggestSupplierId", ordinal = 13)
        public FNumber FSuggestSupplierId;

        @JSONField(name = "FReceiveOrgId", ordinal = 14)
        public FNumber FReceiveOrgId;

        @JSONField(name = "FEvaluatePrice", ordinal = 15)
        public BigDecimal FEvaluatePrice;

        @JSONField(name = "FTAXPRICE", ordinal = 16)
        public BigDecimal FTAXPRICE;

        @JSONField(name = "FTAXRATE", ordinal = 17)
        public Integer FTAXRATE;

        @JSONField(name = "FPriceUnitId", ordinal = 18)
        public FNumber FPriceUnitId;

        @JSONField(name = "FPriceUnitQty", ordinal = 19)
        public Integer FPriceUnitQty;

        @JSONField(name = "FREQSTOCKUNITID", ordinal = 20)
        public FNumber FREQSTOCKUNITID;

        @JSONField(name = "FREQSTOCKQTY", ordinal = 21)
        public Integer FREQSTOCKQTY;

        @JSONField(name = "FLeadTime", ordinal = 22)
        public Integer FLeadTime;

        @JSONField(name = "FSupplierId", ordinal = 23)
        public FNumber FSupplierId;

        @JSONField(name = "FChargeProjectID", ordinal = 24)
        public FNumber FChargeProjectID;

        @JSONField(name = "FPurchaseDeptId", ordinal = 25)
        public FNumber FPurchaseDeptId;

        @JSONField(name = "FReceiveAddress", ordinal = 26)
        public String FReceiveAddress;

        @JSONField(name = "FEntryNote", ordinal = 27)
        public String FEntryNote;

        @JSONField(name = "FPurchaserId", ordinal = 28)
        public FNumber FPurchaserId;

        @JSONField(name = "FPurchaseGroupId", ordinal = 29)
        public FNumber FPurchaseGroupId;

        @JSONField(name = "FBOMNoId", ordinal = 30)
        public FNumber FBOMNoId;

        @JSONField(name = "FStockId", ordinal = 31)
        public FNumber FStockId;

        @JSONField(name = "FProviderId", ordinal = 32)
        public FNumber FProviderId;

        @JSONField(name = "FMtoNo", ordinal = 33)
        public String FMtoNo;

        @JSONField(name = "FBaseReqQty", ordinal = 34)
        public BigDecimal FBaseReqQty;


        @JSONField(name = "FReceiveDeptId", ordinal = 35)
        public FNumber FReceiveDeptId;

        @JSONField(name = "FRequireDeptId", ordinal = 36)
        public FNumber FRequireDeptId;

        @JSONField(name = "FSalUnitID", ordinal = 37)
        public FNumber FSalUnitID;

        @JSONField(name = "FSalQty", ordinal = 38)
        public Integer FSalQty;

        @JSONField(name = "FSalBaseQty", ordinal = 39)
        public Integer FSalBaseQty;
        @JSONField(name = "FIsVmiBusiness", ordinal = 40)
        public String FIsVmiBusiness;

        @JSONField(name = "FDEMANDTYPE", ordinal = 41)
        public String FDEMANDTYPE;

        @JSONField(name = "FDEMANDBILLNO", ordinal = 42)
        public String FDEMANDBILLNO;

        @JSONField(name = "FDEMANDBILLENTRYSEQ", ordinal = 43)
        public Integer FDEMANDBILLENTRYSEQ;

        @JSONField(name = "FDEMANDBILLENTRYID", ordinal = 44)
        public Integer FDEMANDBILLENTRYID;

        @JSONField(name = "FSrcReqMergeEntryIds", ordinal = 45)
        public String FSrcReqMergeEntryIds;

        @JSONField(name = "FAssortBillNo", ordinal = 46)
        public String FAssortBillNo;

        @JSONField(name = "F_ora_Group", ordinal = 47)
        public FNumber F_ora_Group;

        @JSONField(name = "F_RAUQ_TechRequirement", ordinal = 48)
        public String F_RAUQ_TechRequirement;

        @JSONField(name = "F_RAUQ_DistrQty", ordinal = 49)
        public Integer F_RAUQ_DistrQty;


        @JSONField(name = "F_ora_Base", ordinal = 50)
        private F_ora_Text F_ora_Base;

        @JSONField(name = "F_ora_Text", ordinal = 51)
        public String F_ora_Text;

        @JSONField(name = "F_ora_Integer", ordinal = 52)
        public Integer F_ora_Integer;

        @JSONField(name = "F_ora_Text1", ordinal = 53)
        public String F_ora_Text1;

        @JSONField(name = "F_ZLBZ", ordinal = 54)
        public FNumber F_ZLBZ;

        @JSONField(name = "F_YIIM_CheckBox", ordinal = 55)
        public String F_YIIM_CheckBox;


    }



    /**
     * 辅助属性
     */
    @Data
    public static class FAuxPropId {
        /**
         * 材质
         */
        @JSONField(name = "FAUXPROPID__FF100001")
        public FNumber FAUXPROPID__FF100001;
        /**
         * 厚
         */
        @JSONField(name = "FAUXPROPID__FF100002")
        public FNumber FAUXPROPID__FF100002;
        /**
         * 宽
         */
        @JSONField(name = "FAUXPROPID__FF100003")
        public String FAUXPROPID__FF100003;
        /**
         * 长
         */
        @JSONField(name = "FAUXPROPID__FF100004")
        public String FAUXPROPID__FF100004;

        /**
         * 品牌
         */
        @JSONField(name = "FAUXPROPID__FF100005")
        public FNumber FAUXPROPID__FF100005;
        /**
         * 规格型号
         */
        @JSONField(name = "FAUXPROPID__FF100006")
        public FNumber FAUXPROPID__FF100006;
        /**
         * 库存项目
         */
        @JSONField(name = "FAUXPROPID__FF100007")
        public String FAUXPROPID__FF100007;

        /**
         * 复试
         */
        @JSONField(name = "FAUXPROPID__FF100008")
        public String FAUXPROPID__FF100008;
        /**
         * 库存备注
         */
        @JSONField(name = "FAUXPROPID__FF100009")
        public String FAUXPROPID__FF100009;

        @JSONField(name = "FAUXPROPID__FF100011")
        public FNumber FAUXPROPID__FF100011;

        @JSONField(name = "FAUXPROPID__FF100013")
        public String FAUXPROPID__FF100013;

        @JSONField(name = "FAUXPROPID__FF100015")
        public FNumber FAUXPROPID__FF100015;

        @JSONField(name = "FAUXPROPID__FF100016")
        public FNumber FAUXPROPID__FF100016;

        @JSONField(name = "FAUXPROPID__FF100017")
        public FNumber FAUXPROPID__FF100017;

        @JSONField(name = "FAUXPROPID__FF100018")
        public FNumber FAUXPROPID__FF100018;

        @JSONField(name = "FAUXPROPID__FF100019")
        public FNumber FAUXPROPID__FF100019;

        @JSONField(name = "FAUXPROPID__FF100020")
        public FNumber FAUXPROPID__FF100020;

        @JSONField(name = "FAUXPROPID__FF100021")
        public String FAUXPROPID__FF100021;

        @JSONField(name = "FAUXPROPID__FF100022")
        public String FAUXPROPID__FF100022;

        @JSONField(name = "FAUXPROPID__FF100023")
        public String FAUXPROPID__FF100023;
    }


    @Data
    public static class FApplicantId {

        @JSONField(name = "StaffNumber")
        private String StaffNumber;

        public FApplicantId(String StaffNumber) {
            this.StaffNumber = StaffNumber;
        }
    }

    @Data
    public class FMobBillHeadEntity {

        @JSONField(name = "FEntryId")
        public String FEntryId;

        @JSONField(name = "FExtendField")
        public String FExtendField;
        @JSONField(name = "FOrderName")
        public String FOrderName;

        @JSONField(name = "FIsMobBill")
        public String FIsMobBill;

        @JSONField(name = "FMobIsPending")
        public String FMobIsPending;
    }

}
